<?php

/**
* N e w s 
* 
*/

// zeigt eine bestimmte Anzahl an News, man kann die Anzahl mit dem Parameter $a 
// bestimmen oder im Adminbereich (News auf der Startseite) 
// Der übergebene Parameter ist allerdings höher rangig.
function newsZeigen($a="") {
	global $news;
	global $config;
	global $k;
	require($config);	
	if ($a == "") $a = $newsAufStartseite;
	if (count($news) == 1) $a = 1;
	if (count($news) < $a) $a = count($news);
	if (!isset($k)) {
		for ($i=0;$i < $a;$i++) {
			list ($id, $benutzerId, $titel, $text, $datum, $kom, $avatar) = explode("\t", $news[$i]);
			newsVariablenSetzen(&$text,&$avatar,&$link,&$benutzerId,&$datum,&$tmp,$id,$titel);	
			eval(kommentareAufNeuerSeite($id));
		}
	} else alleNewsZeigen();
}

// gibt alle News aus
function alleNewsZeigen() {
	global $news, $config;
	require($config);
	foreach ($news as $line){	
		list ($id, $benutzerId, $titel, $text, $datum, $kom, $avatar) = explode("\t", $line);	
		newsVariablenSetzen(&$text,&$avatar,&$link,&$benutzerId,&$datum,&$tmp,$id,$titel);
		eval(kommentareAufNeuerSeite($id,$tmp));
	}
}


// Zeigt die News mit Seitenwechsel, um den Seitenwechsel zu zeigen muss die 
// Funktion "newsSeitenwechsel()" aufgerufen werden z.B. davor und/oder danach.
function alleNewsZeigenMitSeitenwechsel() {
	global $news;
	global $config;
	global $startPosition;
	global $k;
	$was = $k;
	require($config);
	for($dis=$startPosition; $dis<$startPosition+$newsProSeite;$dis++) {	
		if ($dis < count($news)) {		
			list ($id, $benutzerId, $titel, $text, $datum, $kom, $avatar) = explode("\t", $news[$dis]);	
			newsVariablenSetzen(&$text,&$avatar,&$link,&$benutzerId,&$datum,&$tmp,$id,$titel);
			eval(kommentareAufNeuerSeite($id,$tmp));
		}
	}
}

/**
* News - Helper
* 
*/

// Auswerten ob Kommentare unter einem Newseintrag stehen oder auf einer neuen 
// Seite mit dem Newseintrag angezeigt werden
// (wird im Adminbereich festgelegt)
function kommentareAufNeuerSeite($id) {
	global $config;
	global $k;
	if (isset($k)) { 
		if ($id == $k) return "echo \$tmp->vorlage;";
	} else return "echo \$tmp->vorlage;";
}

// erstellt den Link zu dem Kommentaren oder einen "Zurück" Link
function newsLinkErstellen($id) {
	global $config;
	global $k;
	global $startPosition;
	if (isset($k)) {
		return "<a href='?Anfangsposition=".$startPosition."'>".FONT_NEWS_BACK."</a>";
	} else {
		if (allowkom($id)) return "<a href='?k=$id&amp;Anfangsposition=".$startPosition."'>".FONT_NEWS_KOMLINK." (".komsize($id).")</a>";
	}
}

// Setzt alle Newsvariablen richtig und schreibt sie danach in den Content
function newsVariablenSetzen($text,$avatar,$link,$benutzerId,$datum,$tmp,$id,$titel) {
	$avatar = string2bool($avatar);
	if ($avatar) $avatar = gravatar(userWertSuchen($benutzerId,"mail"),40);
	else $avatar = "";
	$tmp    = new Template(templateUrl.'front_news_eintrag.tpl');
	$text   = ersetzeBilder(ersetzeBBCodes(smiliesUmwandeln($text)));
	$link   = newsLinkErstellen($id);
	$autor  = "<span>".userWertSuchen($benutzerId)."</span>";
	$datum  = formatiereDatum($datum);
	$datum  = "<span>".$datum."</span>";
	$tmp->setContent(newsArray($titel,$avatar,$text,$autor,$datum,$link));
}

// Erstellt das Content Array
function newsArray($titel,$avatar,$text,$autor,$datum,$link) {
	pluginEintrag($titel, $eintag, $datum, $autor);
	return array('titel'  => $titel,
				 'avatar' => $avatar,
				 'text'   => $text,
				 'autor'  => $autor,
				 'date'   => $datum,
				 'link'   => $link);	
}

// Wenn keine Zweck übergeben wurde wird der Name zu der id
// zurück gegeben
function userWertSuchen($id,$zweck="") {
	$userfile = file(dataUrl."user.php");
	$gefunden = false;
	if ($zweck == "") $zweck = "name";
	foreach ($userfile as $line) {
		if (strpos($line,"<?") !== false) continue;
		// if (eregi("<\?",$line)) continue;
		list ($benutzerId, $name, $mail, $pass) = explode("\t", $line);
		if ($benutzerId != $id) continue;
		else $gefunden = true;
 		if ($zweck == "name")   return $name;
		if ($zweck == "mail")   return $mail;
		if ($zweck == "pass")   return $pass;
	}
	if (!$gefunden) return DELETE;
	return false;
}

// fügt anhand der NewsProSeite (im Admin Bereich einstellbar) einen Seitenwechsel ein
function newsSeitenwechsel($wechsel="") {
	global $news;
	global $config;
	global $startPosition;
	
	$links = "";
	require($config);
	
	if ($wechsel != "") $newsProSeite = $wechsel;
	
	$anzahl=count($news);
	if ($anzahl >= $newsProSeite) {
		if (!isset($startPosition)) $Anfangsposition = 0;
		if($startPosition > 0) {
			$back=$startPosition-$newsProSeite;
			if($back < 0) $back = 0;
		}
		if($anzahl>$newsProSeite) {
			$Seiten=intval($anzahl/$newsProSeite);
			if($anzahl%$newsProSeite) $Seiten++;
			
			for ($i=1;$i<=$Seiten;$i++) {
				$fwd=($i-1)*$newsProSeite;
				if($startPosition==$fwd) $links .= $i."&nbsp;";
				else $links .= "<a class=\"seitenwechsel\" href=\"?Anfangsposition=".$fwd."\">".$i."</a> ";
			}
		}	
		$tmp = new Template(templateUrl.'front_news_seitenwechsel.tpl');
		$tmp->setOne("links",$links);
		echo $tmp->vorlage;
	}
}


?>